Component({
  properties: {
    // 订单号
    orderNo: {
      type: String,
      value: 'DD202305160001'
    },
    // 总金额
    totalAmount: {
      type: Number,
      value: 130.00
    },
    // 提示文本
    noticeText: {
      type: String,
      value: '余额抵扣30元，仅需再支付100元'
    },
    // 支付方式列表
    paymentMethods: {
      type: Array,
      value: [
        { type: 'wechat', name: '微信支付', amount: 100.00 },
        { type: 'balance', name: '余额支付', amount: 30.00 }
      ]
    },
    // 返回按钮文本
    backText: {
      type: String,
      value: '返回'
    },
    // 是否显示返回按钮
    showBackButton: {
      type: Boolean,
      value: true
    }
  },

  data: {
    // 支付状态
    paying: false,
    // 支付成功状态
    success: false
  },

  methods: {
    // 确认支付
    onConfirmPayment() {
      // 防止重复点击
      if (this.data.paying) return;
      
      this.setData({
        paying: true
      });
      
      // 触发支付开始事件
      this.triggerEvent('paymentstart', {
        orderNo: this.data.orderNo,
        totalAmount: this.data.totalAmount
      });
      
      // 模拟支付过程
      setTimeout(() => {
        this.setData({
          paying: false,
          success: true
        });
        
        // 触发支付成功事件
        this.triggerEvent('paymentsuccess', {
          orderNo: this.data.orderNo,
          totalAmount: this.data.totalAmount,
          paymentTime: new Date().getTime()
        });
      }, 2000);
    },
    
    // 返回按钮点击事件
    onBack() {
      if (this.data.paying) return;
      
      this.triggerEvent('back', {
        from: this.data.success ? 'success' : 'payment'
      });
      
      // 如果外部没有处理返回事件，默认行为
      if (!this._backHandled) {
        wx.navigateBack();
      }
    },
    
    // 查看订单
    onViewOrder() {
      this.triggerEvent('vieworder', {
        orderNo: this.data.orderNo
      });
    },
    
    // 重置组件状态（外部调用）
    reset() {
      this.setData({
        paying: false,
        success: false
      });
    }
  },
  
  lifetimes: {
    attached() {
      // 监听返回按钮事件处理
      this._backHandled = false;
    }
  }
})